Aspects of the present invention relate generally to the field of system development and test, and more specifically to event-driven simulation of electronics.
Simulation of hardware components can be modeled at various levels of abstraction using event-driven simulation. Processor models implementing Instruction Set Simulators (ISS) in combination with hardware simulators can be used to simulate cross-compiled embedded software, for example, an operating system (OS). A collection of hardware models running such embedded software is known as a Virtual Platform (VP). However, when developing VPs and the corresponding actual systems that they model, issues with incorrect or unexpected interactions between the hardware and software components of the system can occur. And because debuggers typically run on the same operating system on which the application is being tested, this can create atypical system conditions and reduce the effectiveness of the test and debug process.
Additionally, the OS and other applications running on the VP may also need to be debugged, requiring observation and control of the execution of software elements such as kernel modules, executable files and shared object libraries. However, many of these software elements are not explicitly loaded by the user, but instead are loaded automatically by the OS either as a part of the startup procedure or as the result of an interrupt.
Conventional systems are not well suited for debugging this automatically loaded software as they do not allow for the use of user defined breakpoints in the automatically loaded modules, files, or libraries. For example, in order to debug the initialization of automatically started software elements, the target environment or the software element itself must be adjusted. Otherwise, the startup of the file must have progressed to the point where a debug server process can be started, thereby making it impossible to debug the initialization of any processes started before the debug server.
Accordingly, there is a need in the art for a system that facilitates the debugging of files loaded during boot time or other automatically loaded files, such as kernel modules, executable files, and object libraries used during simulation.